package com.menu.Service;

import com.menu.Utils.ResponseResult;
import org.springframework.stereotype.Service;
import java.util.Map;

@Service
public interface OrderService {

    /**
     * 生成订单
     * @param goodsId
     * @param goodsNumber
     * @param id
     * @Param userId
     * @return
     */
    ResponseResult generateOrder(Integer goodsId, Integer goodsNumber, Integer userId, Integer id);

    /**
     * 支付
     * @param orderId
     * @return
     */
    ResponseResult payForOrder(Long orderId, Integer userId);

    /**
     * 支付回调函数
     * @param params
     * @return
     */
    ResponseResult aliCallback(Map<String, String> params);

    /**
     * 申请退款
     * @param userId
     * @param orderId
     * @return
     */
    ResponseResult applyForRefund(Integer userId, Long orderId);

    /**
     * 管理员退款
     * @param orderId
     * @return
     */
    ResponseResult resolveRefound(Long orderId);

    /**
     * 实时数据
     * @return
     */
    ResponseResult realData();

    /**
     * 通过订单号查询
     * @param orderId
     * @return
     */
    ResponseResult queryByOrder(Long orderId,Integer userId);

    /**
     * 分页查询订单
     * @param pageStart
     * @param pageSize
     * @return
     */
    ResponseResult queryOrderByPage(Integer pageStart, Integer pageSize,Integer userId,Integer state);

    /**
     * 查询商品排行前四
     * @return
     */
    ResponseResult commodityList();

    /**
     * 获取近百天的销售量
     * @return
     */
    ResponseResult getSalesNumber();

    /**
     * 获取发货情况
     * @return
     */
    ResponseResult deliverySituation();

    /**
     * 区域成交率
     * @return
     */
    ResponseResult regionalPurchase();

    /**
     * 获取已完成订单总量
     * @return
     */
    ResponseResult getFinish();

    /**
     * 管理员更新订单信息
     * @param state
     * @return
     */
    ResponseResult updateOrder(Integer state,Long orderId);

    /**
     * 管理员进行发货
     * @param orderId
     * @param waybill
     * @param logisticsCompany
     * @return
     */
    ResponseResult deliverGoods(Long orderId, Long waybill, String logisticsCompany);

    /**
     * 商城精选
     * @return
     */
    ResponseResult choicenessList();

    /**
     * 收货
     * @param orderId
     * @param userId
     * @return
     */
    ResponseResult finishOrder(Long orderId, Integer userId);
}
